package com.zimmur.dao.zone;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.zimmur.model.zone.SharedProperty;
import com.zimmur.model.zone.Topic;
/**
 * 社区话题Dao
 * @author Administrator
 *
 */
public interface ITopicDao {
	
	/**
	 * 根据主键ID获取Topic
	 * @param topicId
	 * @return
	 */
	Topic selectByTopicId(long topicId);
	/**
	 * 首页话题查询
	 * @param goodsType
	 * @return
	 */
	List<Topic> selectTopicListByQuery(SharedProperty sharedProperty);
	/**
	 * 星客 发起 话题
	 * @param topic
	 */
    int insertTopicAndStar(Topic topic);
    /**
	 * 知客 发起 话题
	 * @param topic
	 */
    int insertTopicAndKnow(Topic topic);
    /**
     * 修改收藏数
     * @return
     */
    int updateStopicFavNum(Topic topic);
    /**
     * 修改点赞数
     * @return
     */
    int updateStopicPressNum(Topic topic);
    /**
     * 修改点封面图
     * @return
     */
    int updateStopicCoverImage(Topic topic);
    /**
     * 修改浏览数
     * @return
     */
    int updateStopicBrowserNum(Topic topic);
    /**
     * 修改转发数
     * @return
     */
    int updateStopicShareNum(Topic topic);
    /**
     * 修改评论数
     * @return
     */
    int updateStopicCommentNum(Topic topic);
    /**
     * 修改是否打赏
     * @return
     */
    int updateStopicrewardStatus(Topic topic);
    /**
     * 按id查询其对象
     * @param topicId
     * @return
     */
    Topic selectByIdstopic(long topicId);
    /**
     * 按id和用户查询其对象
     * @param topicId
     * @return
     */
    Topic selectByIdAndUser(SharedProperty SharedProperty);
    /**
     * 查询统计
     * 通过关键字查询相关话题 的数量
     * @param keyword
     * @return
     */
    int countTopicByTitle(@Param("keyword")String keyword);
    /**
     * 根据用户ID统计总记录
     * @param createUser
     * @return
     */
    int selectUserIdCounttopic (@Param("userId")long userId,@Param("key")String key);
    /**
     * 根据用户ID查询话题列表对其分页
     * @param 
     * @return
     */
    List<Topic> pageTopicList(SharedProperty SharedProperty);
    /**
     * 根据话题类型，查询话题列表
     * @param SharedProperty
     * @return
     */
    List<Topic> selectTopicByTopicType(SharedProperty sharedProperty);
    
    /**
     * 按条件查询记录总数
     * @param sp
     * @return
     */
    int countTopicByQuery(SharedProperty sp);
    /**
     * 统计主页话题总记录数
     * @param SharedProperty
     * @return
     */
    int countTopicByTopicType(SharedProperty sharedProperty);
    /**
     * 根据话题ID集合in一次性查询
     * @param topicIds
     * @return
     */
    List<Topic> selectListByTopicIds(Map<String,Object> map);
    
    com.zimmur.restful.model.Topic selectByTopicIdToView(@Param("topicId")Long topicId,@Param("userId")long userId);
    
    /**
     *  根据创建者的id 和 话题类型   查询话题列表
     * @param createUser
     * @param first
     * @param size
     * @param topicType 话题类型 1=系列创意/2=达人说/3=侠客
     * @return
     */
    List<Topic> selectListByCreateUser(@Param("createUser")Long createUser,@Param("first")int first,@Param("size")int size,@Param("topicType")Integer topicType );
    /**
     * 根据创建者的id统计话题数量
     * @param createUser
     * @return
     */
    int countByCreateUser(@Param("createUser")Long createUser,@Param("topicType")Integer topicType);
    
    com.zimmur.solr.model.Topic selectByTopicIdForSolr(Long topicId);
    List<com.zimmur.solr.model.Topic> selectByTopicIdsForSolr(String topicIds);
}